//
//  YJMHomeTableViewController.swift
//  Weibo
//
//  Created by 杨军民 on 16/7/18.
//  Copyright © 2016年 杨军民. All rights reserved.
//

import UIKit

/*

1、判断用户是否登录，没有登录就登录要是登录就设置导航栏的两边按钮，(因为之前的导航栏两边的按钮没有了)
2、扩展一个UIBarButton分类，创建导航栏按钮

3、调取封装的导航栏按钮方法

错误：点击按钮事件方法的忘记添加“：”导致的结果就是没有返回值一个要返回值

4、从viewModel中获取数据，
a、打通数据，测试是否能够获取到数据
b、打印数据（返回数据是否获取成功）

5、获取微博模型数据
a、当微博数据发生改变的时候让tableView显示
6、实现tableView数据源方法
a、创建重用标识符

b、注册cell、让tableView自适应cell里面的内容改变高度大小等
1)、因为自定义了一个tableViewcell，所以要改成自定义的

c、返回cell 的数量
d、返回cell
*/

class YJMHomeTableViewController: YJMBaseController {
    
    //重用标识符
    private let HomeCell = "HCell"
    
    ///微博模型数据
    var statuses: [YJMWeiBoModel]? {
        didSet{
            //当微博数据发生改变的时候，让tableView显示
            self.tableView.reloadData()
        }
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //判断是否登录
        if !YJMUserAccountViewModel.sharedUserAccountViewModel.userLogin{
            //没有登录走这边
            return
        }
        //登录之后走
        setNavigationBar()
        
        //加载微博数据
        YJMStatusModel.sharedStatus.loadStatus { (error, statusModel) -> Void in
            if error != nil {
                print("加载数据失败:\(error)")
                return
            }
            //加载数据成功
            print("加载数据成功\(statusModel)")
            self.statuses = statusModel
        }
        //注册 cell
        self.tableView.registerClass(YJMStatusCell.self, forCellReuseIdentifier: HomeCell)
        
        //让tableView自己适应cell的内容(猜测高度)
        self.tableView.estimatedRowHeight = 200
        self.tableView.rowHeight = UITableViewAutomaticDimension
        self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None
    }
    
    private func setNavigationBar() {
        //左边导航栏
        self.navigationItem.leftBarButtonItem = UIBarButtonItem(imageName: "navigationbar_friendsearch")
        //右边导航栏
        self.navigationItem.rightBarButtonItem = UIBarButtonItem(imageName: "navigationbar_pop")
        
        //获取user的数据
        let screen_name = YJMUserAccountViewModel.sharedUserAccountViewModel.userAccount?.screen_name ?? "默认名字"
        //标题
        let title = YJMHomeTitle(title: screen_name)
        //添加点击事件：错误
        title.addTarget(self, action: "titleButtonClick:", forControlEvents: UIControlEvents.TouchUpInside)
        //添加到导航栏
        self.navigationItem.titleView = title
    }
    
    //MARK: - 实现标题按钮点击事件
    func titleButtonClick(button: UIButton) {
        print("标题点击事件")
        //点击时取反
        button.selected = !button.selected
        //让其逆时针旋转，因为系统设置的是就近原则，所以只要减少0.几就可以实现
        let transform = button.selected ? CGAffineTransformMakeRotation(CGFloat(M_PI - 0.001)) : CGAffineTransformIdentity
        
        UIView.animateWithDuration(DefaultAnimtionDuration) { () -> Void in
            //添加到控件中
            button.imageView?.transform = transform
        }
    }
}

///实现数据源方法
extension YJMHomeTableViewController {
    //返回cell的数量
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return self.statuses?.count ?? 0
        //        return 5
    }
    
    //返回cell
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        //创建cell
        let cell = tableView .dequeueReusableCellWithIdentifier(HomeCell, forIndexPath: indexPath) as! YJMStatusCell
        //赋值
        let status = self.statuses![indexPath.row]
        cell.status = status
        
        return cell
    }
}
